﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//struct A
//{
//int _a : 2;
//int _b : 5;
//int _c : 10;
//int _d : 30;
//};
//int main()
//{
//	struct A sa = { 0 };
//	printf("%d\n", sizeof(struct A));
//	//scanf("%d", &sa._b);//这是错误的
//	//正确的⽰范
//	int b = 0;
//	scanf("%d", &b);// 可移植的程序最好不用位段
//	sa._b = b;
//	return 0;
//}

//enum Day//星期
//{
//	Mon,
//	Tues,
//	Wed,
//	Thur,
//	Fri,
//	Sat,
//	Sun
//};
//enum Sex//性别
//{
//	MALE,
//	FEMALE,
//	SECRET
//};
//enum Color//颜色
//{
//	RED,
//	GREEN,
//	BLUE
//};
//int main()
//{
//	enum Day d = Sun;
//	printf("%d", Mon);
//	return 0;
//}

//struct S// // 位段的内存分配分析
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//int main() 
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//
//	return 0;
//}

//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//
//
//int main()
//{
//	struct A sa = { 0 };
//	int b = 0;// // 应该这样子输入
//	scanf("%d ", &b);
//	sa._b = b;
//
//	return 0;
//}

// //联合体
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	printf("%zd\n", sizeof(union Un));// //大小只有4 
//	// // 至少是最大类型的空间，但是也存在对齐现象，所以还可能更大
//	printf("%p\n", &(un.i));// // 三个地址都是一样的，共用一块空间
//	printf("%p\n", &(un.c));
//	printf("%p\n", &un);
//	return 0;
//}

//union Un1
//{
//	char c[5];//  1/8/1
//	int i;//  4/8/4
//};
//
//union Un2
//{
//	short c[7];//14  2/8/2
//	int i;//4  4/8/4
//};
//int main()
//{
//	printf("%zd\n", sizeof(union Un1));
//	printf("%zd\n", sizeof(union Un2));
//	return 0;
//}

//struct gift_list1// 礼物各类属性 这样设计会浪费内存
//{
//	//公共属性
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//	//特殊属性
//	char title[20];//书名
//	char author[20];//作者
//	int num_pages;//⻚数
//	char design[30];//设计
//	int colors;//颜⾊
//	int sizes;//尺⼨
//};
//
//struct gift_list2// //联合体与结构体一同使用
//{
//	int stock_number;//库存量
//	double price; //定价
//	int item_type;//商品类型
//	// //特殊属性共用一块空间 ;
//
//	// //匿名的 联合体类型
//	union {
//		struct
//		{
//			char title[20];//书名
//			char author[20];//作者
//			int num_pages;//⻚数
//		}book;
//		struct
//		{
//			char design[30];//设计
//		}mug;
//		struct
//		{
//			char design[30];//设计
//			int colors;//颜⾊
//			int sizes;//尺⼨
//		}shirt;
//	}item;
//};

// //判断大小端 ; 

//int main()// //用指针
//{
//	int a = 1;
//	if (*(char*)&a == 1)
//	{
//		printf("小端存储\n");// 小端
//	}
//	else
//	{
//		cout << "大端存储" << endl;
//	}
//	return 0;
//}

// //用联合体
//int check_sys()
//{
//	union 
//	{
//		char c;
//		int i;
//	}un;
//	un.i = 1;
//
//	return un.c;
//}
//int main()
//{
//	
//	if (check_sys() == 1)
//	{
//		printf("小端\n");
//	}
//	else
//	{
//		cout << "大端" << endl;
//	}
//	return 0;
//}

